/*
 * Circle.h
 *
 *  Created on: Jan 20, 2011
 *      Author: Helpful Learn Group
 */

#ifndef CIRCLE_H_
#define CIRCLE_H_

#include "Shape.h"
#include "BoundingRectangle.h"
#include <iostream>

using namespace std;

namespace GSP280
{

	class Circle: public Shape
	{
	private:
		double radius;	
		BoundingRectangle collisionBox;


		// Add bounding rectangle member here

	public:
		Circle() : radius(0) {};							//Default Constructor
		Circle(double Radius);								//Overloaded Constructor
		virtual ~Circle(){};								//Destructor


		void setRadius(const double &Radius);				//set the radius of the circle
		const double getRadius() const;						//return the radius of the circle
		
		const Vector2 getCollisionBox_Location() const; 	//return collsionBox location
		const float getCollisionBox_Location_X() const; 	//return collsionBox location_X
		const float getCollisionBox_Location_Y() const; 	//return collsionBox location_Y

		const int getCollisionBox_Height() const; 			//return collsionBox Height
		const int getCollisionBox_Width() const; 			//return collsionBox Width

		const double calcArea() const;						//calculate area of circle

		void setLocation(const Vector2 &vect);				//set the location of the circle given a vector
		void setLocation(const float &x, const float &y);	//set the location of the circle given x,y
		void setLocation_X(const float &x);					//set the location_X of the circle
		void setLocation_Y(const float &y);					//set the location_Y of the circle
		
		const Vector2 getLocation() const;					//get the location of the circle in Vector2
		const float getLocation_X() const;					//get the location_X of the circle
		const float getLocation_Y() const;					//get the location_Y of the circle

		const bool intersects( const Circle &circle );		//Detect IF 'this'collides with input obj

	// NEEDED!!
	// Bounding Rectangle methods to collisionBox the circle.
	
	};

}

#endif /* CIRCLE_H_ */
